Message d'erreur : Maximum execution time of 300 seconds exceeded (résultat d'une requête PHP envoyée à MYSQL et WAMP ou EASYPHP)
Contexte : Récupération du contenu d'un fichier XML pour être intégré dans une base MYSQL
En local sous WAMP ( PHP5) ou EasyPHP
- Première possibilité :
Augmenter la durée maximale d'exécution des requêtes :
Sur WAMP :
- CLIC sur l'icone de WAMP
- Fichiers de configuration
- php.ini
- menu "édition -> rechercher -> max_execution (avec l'underscore)
- on se retouve sur la ligne "max_execution_time = 300 ; Maximum execution time of each script, in seconds "
il suffit d'augmenter la valeur, à 3600 par exemple = 1 heure = le temps d'aller bouffer un morceau
ou alors mettre sa valeur à zéro (plus de limite de temps d'exécution) ce qui permettra à la machine de tourner toute la nuit pendant votre sommeil
et de réchauffer l'appartement...
vérifiez quand même avec l'affichage d'un numéro de ligne que vous n'avez pas malencontreusement fait une boucle infinie !
- il faut penser à fermer WAMP et le relancer pour que la modification du max_execution_time dans PHP-INI soit prise en compte, avant de relancer l'exécution du script et d'allar pionçer...
Evidemment, si vous ne travaillez pas en local, mais sur un site chez un hébergeur gratuit, il y a moins de chance que
vous puissiez accéder au php.ini et modifier le "maximum execution time".
Et si vous êtes chez un hébergeur payant, en hébergement mutualisé, vous risquez fort d'obtenir une "sanction" sur votre compte
en cas de requêtes moulinant longtemps. Dans la pratique, cela se traduit par exemple, par une suppression de votre base de données
Bien sûr, vous aviez fait des sauvegardes régulières ;-)
- Découpage de la requête
Exemple : requête qui concernait tous les départements... Effectuer une requête pour un intervale de départements ou un seul département à la fois
Cela peut devenir la galère, si la même manip est utilisée toutes les semmaines pour mettre à jour la BDD !
- Lancer automatiquement les différentes requêtes : il y a souvent la possibilité de passer d'une requête à une autre, dans en lancant l'exécution d'un autre fichier PHP (puisque la boucle à l'intérieur d'un même fichier dépasse la durée maximale d'exécution)
avec header, vers une page avec un paramètre (ex. N° de département qui aura été incrémenté) donc ce ne sera pas la même page qui sera traitée...
- Optimisation de la requête : (à faire peut-être en premier ;-) Ne traiter que les champs utiles au lieu d'uliliser l'étoile magique * qui faisait gagner un peu de temps à l'écriture de la requête...
Erreur : Message = Maximum execution time of 300 seconds exceeded Retour à Ziprof
message d'erreur : Maximum execution time of 300 seconds exceeded (Par exemple, en traitant une grosse base XML
Annonces de location )